#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>

using namespace std;

typedef long long LL;
const int N = 1e6 + 10;
int p[N], cnt;
int l, r;
bool st[N];

bool ret[N];
void get_prime()
{
	int n = sqrt(r);
	for (LL i = 2; i <= n; i++)
	{
		if (!st[i]) p[++cnt] = i;
		for (int j = 1; i * p[j] <= n; j++)
		{
			st[i * p[j]] = true;
			if (i % p[j] == 0) break;
		}
	}
}
//void get_prime()
//{
//	for (LL i = 2; i <= r; i++)
//	{
//		if (!st[i]) p[++cnt] = i;
//		for (LL j = i * i;  j <= r; j+= i)
//			st[j] = true;
//	}
//}
int main()
{
	cin >> l >> r;

	get_prime();

	l = l == 1 ? 2 : l;

	for (int i = 1; i <= cnt; i++)
	{
		LL x = p[i];
		for (LL j = max(2 * x, (l + x - 1) / x * x); j <= r; j += x)
		{
			ret[j - l] = true;
		}
	}

	int sum = 0;

	for (int i = l; i <= r; i++)
		if (!ret[i - l]) sum++;

	cout << sum << endl;
	return 0;
}